package com.ruoyi.system.domain.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.system.domain.PAskCoupon;
import com.ruoyi.system.domain.PStoreProductAttrValue;
import com.ruoyi.system.domain.bo.AttrBo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.util.List;


/**
 * 商品视图对象 p_store_product
 *
 * @author ruoyi
 * @date 2022-08-01
 */
@Data
@ApiModel("商品视图对象")
@ExcelIgnoreUnannotated
public class PStoreProductVo {

    private static final long serialVersionUID = 1L;

    /**
     * 商品id
     */
    @ExcelProperty(value = "商品id")
    @ApiModelProperty("商品id")
    private Long id;

    /**
     * 商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)
     */
    @ExcelProperty(value = "商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)")
    @ApiModelProperty("商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)")
    private Integer merId;

    @ApiModelProperty(value = "规格id")
    private Long standardId;

    /**
     * 商品图片
     */
    @ExcelProperty(value = "商品图片")
    @ApiModelProperty("商品图片")
    private String image;

    @ExcelProperty(value = "商品图片展示")
    @ApiModelProperty("商品图片展示")
    private String fileName;

    /**
     * 轮播图
     */
    @ExcelProperty(value = "轮播图")
    @ApiModelProperty("轮播图")
    private String sliderImage;

    @ApiModelProperty("轮播图展示")
    private String sliderShow;

    /**
     * 商品名称
     */
    @ExcelProperty(value = "商品名称")
    @ApiModelProperty("商品名称")
    private String storeName;

    /**
     * 商品简介
     */
    @ExcelProperty(value = "商品简介")
    @ApiModelProperty("商品简介")
    private String storeInfo;

    /**
     * 关键字
     */
    @ExcelProperty(value = "关键字")
    @ApiModelProperty("关键字")
    private String keyword;

    /**
     * 商品条码（一维码）
     */
    @ExcelProperty(value = "商品条码", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "一=维码")
    @ApiModelProperty("商品条码（一维码）")
    private String barCode;

    /**
     * 分类id
     */
    @ExcelProperty(value = "分类id")
    @ApiModelProperty("分类id")
    private String cateId;

    /**
     * 商品价格
     */
    @ExcelProperty(value = "商品价格")
    @ApiModelProperty("商品价格")
    private BigDecimal price;

    /**
     * 会员价格
     */
    @ExcelProperty(value = "会员价格")
    @ApiModelProperty("会员价格")
    private BigDecimal vipPrice;

    /**
     * 市场价
     */
    @ExcelProperty(value = "市场价")
    @ApiModelProperty("市场价")
    private BigDecimal otPrice;

    /**
     * 邮费
     */
    @ExcelProperty(value = "邮费")
    @ApiModelProperty("邮费")
    private BigDecimal postage;

    /**
     * 商品详情
     */
    @ApiModelProperty(value = "商品详情", required = true)
    @NotBlank(message = "商品详情不能为空", groups = { AddGroup.class, EditGroup.class })
    private String content;

    /**
     * 单位名
     */
    @ExcelProperty(value = "单位名")
    @ApiModelProperty("单位名")
    private String unitName;

    /**
     * 排序
     */
    @ExcelProperty(value = "排序")
    @ApiModelProperty("排序")
    private Long sort;

    /**
     * 销量
     */
    @ExcelProperty(value = "销量")
    @ApiModelProperty("销量")
    private Long sales;

    /**
     * 库存
     */
    @ExcelProperty(value = "库存")
    @ApiModelProperty("库存")
    private Long stock;

    /**
     * 状态（0：未上架，1：上架）
     */
    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=：未上架，1：上架")
    @ApiModelProperty("状态（0：未上架，1：上架）")
    private String isShow;

    /**
     * 是否热卖
     */
    @ExcelProperty(value = "是否热卖")
    @ApiModelProperty("是否热卖")
    private String isHot;

    /**
     * 是否优惠
     */
    @ExcelProperty(value = "是否优惠")
    @ApiModelProperty("是否优惠")
    private String isBenefit;

    /**
     * 是否精品
     */
    @ExcelProperty(value = "是否精品")
    @ApiModelProperty("是否精品")
    private String isBest;

    /**
     * 是否新品
     */
    @ExcelProperty(value = "是否新品")
    @ApiModelProperty("是否新品")
    private String isNew;

    /**
     * 添加时间
     */
    @ExcelProperty(value = "添加时间")
    @ApiModelProperty("添加时间")
    private Long addTime;

    /**
     * 是否包邮
     */
    @ExcelProperty(value = "是否包邮")
    @ApiModelProperty("是否包邮")
    private String isPostage;

    /**
     * 商户是否代理 0不可代理1可代理
     */
    @ExcelProperty(value = "商户是否代理 0不可代理1可代理")
    @ApiModelProperty("商户是否代理 0不可代理1可代理")
    private String merUse;

    /**
     * 获得积分
     */
    @ExcelProperty(value = "获得积分")
    @ApiModelProperty("获得积分")
    private Integer giveIntegral;

    /**
     * 成本价
     */
    @ExcelProperty(value = "成本价")
    @ApiModelProperty("成本价")
    private BigDecimal cost;

    /**
     * 秒杀状态 0 未开启 1已开启
     */
    @ExcelProperty(value = "秒杀状态 0 未开启 1已开启")
    @ApiModelProperty("秒杀状态 0 未开启 1已开启")
    private String isSeckill;

    /**
     * 砍价状态 0未开启 1开启
     */
    @ExcelProperty(value = "砍价状态 0未开启 1开启")
    @ApiModelProperty("砍价状态 0未开启 1开启")
    private String isBargain;

    /**
     * 是否优品推荐
     */
    @ExcelProperty(value = "是否优品推荐")
    @ApiModelProperty("是否优品推荐")
    private String isGood;

    /**
     * 是否单独分佣
     */
    @ExcelProperty(value = "是否单独分佣")
    @ApiModelProperty("是否单独分佣")
    private String isSub;

    /**
     * 虚拟销量
     */
    @ExcelProperty(value = "虚拟销量")
    @ApiModelProperty("虚拟销量")
    private Long ficti;

    /**
     * 浏览量
     */
    @ExcelProperty(value = "浏览量")
    @ApiModelProperty("浏览量")
    private Long browse;

    /**
     * 商品二维码地址(用户小程序海报)
     */
    @ExcelProperty(value = "商品二维码地址(用户小程序海报)")
    @ApiModelProperty("商品二维码地址(用户小程序海报)")
    private String codePath;

    /**
     * 淘宝京东1688类型
     */
    @ExcelProperty(value = "淘宝京东1688类型")
    @ApiModelProperty("淘宝京东1688类型")
    private String soureLink;

    /**
     * 主图视频链接
     */
    @ExcelProperty(value = "主图视频链接")
    @ApiModelProperty("主图视频链接")
    private String videoLink;

    /**
     * 运费模板ID
     */
    @ExcelProperty(value = "运费模板ID")
    @ApiModelProperty("运费模板ID")
    private Long tempId;

    /**
     * 规格 0单 1多
     */
    @ExcelProperty(value = "规格 0单 1多")
    @ApiModelProperty("规格 0单 1多")
    private String specType;

    /**
     * 活动显示排序0=默认, 1=秒杀，2=砍价，3=拼团
     */
    @ExcelProperty(value = "活动显示排序0=默认, 1=秒杀，2=砍价，3=拼团")
    @ApiModelProperty("活动显示排序0=默认, 1=秒杀，2=砍价，3=拼团")
    private String activity;

    /**
     * 展示图
     */
    @ExcelProperty(value = "展示图")
    @ApiModelProperty("展示图")
    private String flatPattern;

    /**
     * 是否回收站
     */
    @ExcelProperty(value = "是否回收站")
    @ApiModelProperty("是否回收站")
    private String isRecycle;

    @ApiModelProperty(value = "商品属性", required = true)
    private List<AttrBo> attr;

    @ApiModelProperty(value = "商品属性详情", required = true)
    private List<PStoreProductAttrValue> attrValue;

    @ApiModelProperty(value = "优惠券id集合")
    private List<Long> couponIds;

    @ApiModelProperty(value = "优惠券")
    private List<PAskCoupon> coupons;

    @ApiModelProperty(value = "判断商品是否收藏")
    private Boolean flag;
}
